home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Freeware / Adobe Air 1.5 / AdobeAIRInstaller.exe / setup.swf / scripts / mx / containers / utilityClasses / BoxLayout.as < prev    next >
Encoding:
Text File  |  2008-10-29  |  9.9 KB  |  280 lines

  1. package mx.containers.utilityClasses
  2. {
  3.    import mx.containers.BoxDirection;
  4.    import mx.controls.scrollClasses.ScrollBar;
  5.    import mx.core.Container;
  6.    import mx.core.EdgeMetrics;
  7.    import mx.core.IUIComponent;
  8.    import mx.core.ScrollPolicy;
  9.    import mx.core.mx_internal;
  10.    
  11.    use namespace mx_internal;
  12.    
  13.    public class BoxLayout extends Layout
  14.    {
  15.       mx_internal static const VERSION:String = "3.0.0.0";
  16.       
  17.       public var direction:String = "vertical";
  18.       
  19.       public function BoxLayout()
  20.       {
  21.          super();
  22.       }
  23.       
  24.       private function isVertical() : Boolean
  25.       {
  26.          return direction != BoxDirection.HORIZONTAL;
  27.       }
  28.       
  29.       mx_internal function getHorizontalAlignValue() : Number
  30.       {
  31.          var _loc1_:String = target.getStyle("horizontalAlign");
  32.          if(_loc1_ == "center")
  33.          {
  34.             return 0.5;
  35.          }
  36.          if(_loc1_ == "right")
  37.          {
  38.             return 1;
  39.          }
  40.          return 0;
  41.       }
  42.       
  43.       override public function updateDisplayList(param1:Number, param2:Number) : void
  44.       {
  45.          var _loc16_:Number = NaN;
  46.          var _loc17_:int = 0;
  47.          var _loc18_:Number = NaN;
  48.          var _loc19_:Number = NaN;
  49.          var _loc20_:Number = NaN;
  50.          var _loc21_:int = 0;
  51.          var _loc22_:IUIComponent = null;
  52.          var _loc23_:IUIComponent = null;
  53.          var _loc24_:Number = NaN;
  54.          var _loc25_:Number = NaN;
  55.          var _loc26_:Number = NaN;
  56.          var _loc27_:Number = NaN;
  57.          var _loc3_:Container = super.target;
  58.          var _loc4_:int = _loc3_.numChildren;
  59.          if(_loc4_ == 0)
  60.          {
  61.             return;
  62.          }
  63.          var _loc5_:EdgeMetrics = _loc3_.viewMetricsAndPadding;
  64.          var _loc6_:Number = _loc3_.getStyle("paddingLeft");
  65.          var _loc7_:Number = _loc3_.getStyle("paddingTop");
  66.          var _loc8_:Number = mx_internal::getHorizontalAlignValue();
  67.          var _loc9_:Number = mx_internal::getVerticalAlignValue();
  68.          var _loc10_:Number = _loc3_.scaleX > 0 && _loc3_.scaleX != 1 ? _loc3_.minWidth / Math.abs(_loc3_.scaleX) : _loc3_.minWidth;
  69.          var _loc11_:Number = _loc3_.scaleY > 0 && _loc3_.scaleY != 1 ? _loc3_.minHeight / Math.abs(_loc3_.scaleY) : _loc3_.minHeight;
  70.          var _loc12_:Number = Math.max(param1,_loc10_) - _loc5_.right - _loc5_.left;
  71.          var _loc13_:Number = Math.max(param2,_loc11_) - _loc5_.bottom - _loc5_.top;
  72.          var _loc14_:ScrollBar = _loc3_.horizontalScrollBar;
  73.          var _loc15_:ScrollBar = _loc3_.verticalScrollBar;
  74.          if(_loc4_ == 1)
  75.          {
  76.             _loc23_ = IUIComponent(_loc3_.getChildAt(0));
  77.             _loc24_ = Number(_loc23_.percentWidth);
  78.             _loc25_ = Number(_loc23_.percentHeight);
  79.             if(_loc24_)
  80.             {
  81.                _loc26_ = Math.max(_loc23_.minWidth,Math.min(_loc23_.maxWidth,_loc24_ >= 100 ? _loc12_ : _loc12_ * _loc24_ / 100));
  82.             }
  83.             else
  84.             {
  85.                _loc26_ = Number(_loc23_.getExplicitOrMeasuredWidth());
  86.             }
  87.             if(_loc25_)
  88.             {
  89.                _loc27_ = Math.max(_loc23_.minHeight,Math.min(_loc23_.maxHeight,_loc25_ >= 100 ? _loc13_ : _loc13_ * _loc25_ / 100));
  90.             }
  91.             else
  92.             {
  93.                _loc27_ = Number(_loc23_.getExplicitOrMeasuredHeight());
  94.             }
  95.             if(_loc23_.scaleX == 1 && _loc23_.scaleY == 1)
  96.             {
  97.                _loc23_.setActualSize(Math.floor(_loc26_),Math.floor(_loc27_));
  98.             }
  99.             else
  100.             {
  101.                _loc23_.setActualSize(_loc26_,_loc27_);
  102.             }
  103.             if(_loc15_ != null && _loc3_.verticalScrollPolicy == ScrollPolicy.AUTO)
  104.             {
  105.                _loc12_ += _loc15_.minWidth;
  106.             }
  107.             if(_loc14_ != null && _loc3_.horizontalScrollPolicy == ScrollPolicy.AUTO)
  108.             {
  109.                _loc13_ += _loc14_.minHeight;
  110.             }
  111.             _loc20_ = (_loc12_ - _loc23_.width) * _loc8_ + _loc6_;
  112.             _loc19_ = (_loc13_ - _loc23_.height) * _loc9_ + _loc7_;
  113.             _loc23_.move(Math.floor(_loc20_),Math.floor(_loc19_));
  114.          }
  115.          else if(isVertical())
  116.          {
  117.             _loc16_ = _loc3_.getStyle("verticalGap");
  118.             _loc17_ = _loc4_;
  119.             _loc21_ = 0;
  120.             while(_loc21_ < _loc4_)
  121.             {
  122.                if(!IUIComponent(_loc3_.getChildAt(_loc21_)).includeInLayout)
  123.                {
  124.                   _loc17_--;
  125.                }
  126.                _loc21_++;
  127.             }
  128.             _loc18_ = Flex.flexChildHeightsProportionally(_loc3_,_loc13_ - (_loc17_ - 1) * _loc16_,_loc12_);
  129.             if(_loc14_ != null && _loc3_.horizontalScrollPolicy == ScrollPolicy.AUTO)
  130.             {
  131.                _loc18_ += _loc14_.minHeight;
  132.             }
  133.             if(_loc15_ != null && _loc3_.verticalScrollPolicy == ScrollPolicy.AUTO)
  134.             {
  135.                _loc12_ += _loc15_.minWidth;
  136.             }
  137.             _loc19_ = _loc7_ + _loc18_ * _loc9_;
  138.             _loc21_ = 0;
  139.             while(_loc21_ < _loc4_)
  140.             {
  141.                _loc22_ = IUIComponent(_loc3_.getChildAt(_loc21_));
  142.                _loc20_ = (_loc12_ - _loc22_.width) * _loc8_ + _loc6_;
  143.                _loc22_.move(Math.floor(_loc20_),Math.floor(_loc19_));
  144.                if(_loc22_.includeInLayout)
  145.                {
  146.                   _loc19_ += _loc22_.height + _loc16_;
  147.                }
  148.                _loc21_++;
  149.             }
  150.          }
  151.          else
  152.          {
  153.             _loc16_ = _loc3_.getStyle("horizontalGap");
  154.             _loc17_ = _loc4_;
  155.             _loc21_ = 0;
  156.             while(_loc21_ < _loc4_)
  157.             {
  158.                if(!IUIComponent(_loc3_.getChildAt(_loc21_)).includeInLayout)
  159.                {
  160.                   _loc17_--;
  161.                }
  162.                _loc21_++;
  163.             }
  164.             _loc18_ = Flex.flexChildWidthsProportionally(_loc3_,_loc12_ - (_loc17_ - 1) * _loc16_,_loc13_);
  165.             if(_loc14_ != null && _loc3_.horizontalScrollPolicy == ScrollPolicy.AUTO)
  166.             {
  167.                _loc13_ += _loc14_.minHeight;
  168.             }
  169.             if(_loc15_ != null && _loc3_.verticalScrollPolicy == ScrollPolicy.AUTO)
  170.             {
  171.                _loc18_ += _loc15_.minWidth;
  172.             }
  173.             _loc20_ = _loc6_ + _loc18_ * _loc8_;
  174.             _loc21_ = 0;
  175.             while(_loc21_ < _loc4_)
  176.             {
  177.                _loc22_ = IUIComponent(_loc3_.getChildAt(_loc21_));
  178.                _loc19_ = (_loc13_ - _loc22_.height) * _loc9_ + _loc7_;
  179.                _loc22_.move(Math.floor(_loc20_),Math.floor(_loc19_));
  180.                if(_loc22_.includeInLayout)
  181.                {
  182.                   _loc20_ += _loc22_.width + _loc16_;
  183.                }
  184.                _loc21_++;
  185.             }
  186.          }
  187.       }
  188.       
  189.       mx_internal function getVerticalAlignValue() : Number
  190.       {
  191.          var _loc1_:String = target.getStyle("verticalAlign");
  192.          if(_loc1_ == "middle")
  193.          {
  194.             return 0.5;
  195.          }
  196.          if(_loc1_ == "bottom")
  197.          {
  198.             return 1;
  199.          }
  200.          return 0;
  201.       }
  202.       
  203.       mx_internal function heightPadding(param1:Number) : Number
  204.       {
  205.          var _loc2_:EdgeMetrics = target.viewMetricsAndPadding;
  206.          var _loc3_:Number = _loc2_.top + _loc2_.bottom;
  207.          if(param1 > 1 && isVertical())
  208.          {
  209.             _loc3_ += target.getStyle("verticalGap") * (param1 - 1);
  210.          }
  211.          return _loc3_;
  212.       }
  213.       
  214.       mx_internal function widthPadding(param1:Number) : Number
  215.       {
  216.          var _loc2_:EdgeMetrics = target.viewMetricsAndPadding;
  217.          var _loc3_:Number = _loc2_.left + _loc2_.right;
  218.          if(param1 > 1 && isVertical() == false)
  219.          {
  220.             _loc3_ += target.getStyle("horizontalGap") * (param1 - 1);
  221.          }
  222.          return _loc3_;
  223.       }
  224.       
  225.       override public function measure() : void
  226.       {
  227.          var _loc1_:Container = null;
  228.          var _loc10_:Number = NaN;
  229.          var _loc11_:Number = NaN;
  230.          var _loc12_:IUIComponent = null;
  231.          var _loc13_:Number = NaN;
  232.          var _loc14_:Number = NaN;
  233.          _loc1_ = super.target;
  234.          var _loc2_:Boolean = isVertical();
  235.          var _loc3_:Number = 0;
  236.          var _loc4_:Number = 0;
  237.          var _loc5_:Number = 0;
  238.          var _loc6_:Number = 0;
  239.          var _loc7_:int;
  240.          var _loc8_:int = _loc7_ = _loc1_.numChildren;
  241.          var _loc9_:int = 0;
  242.          while(_loc9_ < _loc7_)
  243.          {
  244.             _loc12_ = IUIComponent(_loc1_.getChildAt(_loc9_));
  245.             if(!_loc12_.includeInLayout)
  246.             {
  247.                _loc8_--;
  248.             }
  249.             else
  250.             {
  251.                _loc13_ = Number(_loc12_.getExplicitOrMeasuredWidth());
  252.                _loc14_ = Number(_loc12_.getExplicitOrMeasuredHeight());
  253.                if(_loc2_)
  254.                {
  255.                   _loc3_ = Math.max(!isNaN(_loc12_.percentWidth) ? Number(_loc12_.minWidth) : _loc13_,_loc3_);
  256.                   _loc5_ = Math.max(_loc13_,_loc5_);
  257.                   _loc4_ += !isNaN(_loc12_.percentHeight) ? _loc12_.minHeight : _loc14_;
  258.                   _loc6_ += _loc14_;
  259.                }
  260.                else
  261.                {
  262.                   _loc3_ += !isNaN(_loc12_.percentWidth) ? _loc12_.minWidth : _loc13_;
  263.                   _loc5_ += _loc13_;
  264.                   _loc4_ = Math.max(!isNaN(_loc12_.percentHeight) ? Number(_loc12_.minHeight) : _loc14_,_loc4_);
  265.                   _loc6_ = Math.max(_loc14_,_loc6_);
  266.                }
  267.             }
  268.             _loc9_++;
  269.          }
  270.          _loc10_ = mx_internal::widthPadding(_loc8_);
  271.          _loc11_ = mx_internal::heightPadding(_loc8_);
  272.          _loc1_.measuredMinWidth = _loc3_ + _loc10_;
  273.          _loc1_.measuredMinHeight = _loc4_ + _loc11_;
  274.          _loc1_.measuredWidth = _loc5_ + _loc10_;
  275.          _loc1_.measuredHeight = _loc6_ + _loc11_;
  276.       }
  277.    }
  278. }
  279.  
  280.